Fix memory management of types array
authorKristian Rietveld <kris@gtk.org>
Wed, 30 Dec 2009 13:18:33 +0000 (14:18 +0100)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Sun, 4 Apr 2010 00:53:47 +0000 (20:53 -0400)
Also add autorelease pool to gtk_drag_begin_idle().

gtk/gtkclipboard-quartz.c
gtk/gtkdnd-quartz.c

index 2868747826b683bf7b867936e7ed084371c7c43e..d0cc562625f4c887dfc77f1c56d636b43165f9af 100644 (file)
@@ -370,7 +370,7 @@ gtk_clipboard_set_contents (GtkClipboard         *clipboard,
   clipboard->target_list = gtk_target_list_new (targets, n_targets);
 
   [clipboard->pasteboard declareTypes:types owner:owner];
-
+  [types release];
   [pool release];
 
   return TRUE;
index 275ebba0bdc3f000fb791f944c17341a9bf575bf..f01a71fd34f7bfcc7f2367e3e51cebe21fdd40db 100644 (file)
@@ -455,7 +455,9 @@ register_types (GtkWidget *widget, GtkDragDestSite *site)
       pool = [[NSAutoreleasePool alloc] init];
       types = _gtk_quartz_target_list_to_pasteboard_types (site->target_list);
 
-      [nswindow registerForDraggedTypes:types];
+      [nswindow registerForDraggedTypes:[types copy]];
+
+      [types release];
       [pool release];
     }
 }
@@ -1063,6 +1065,7 @@ gtk_drag_dest_find_target (GtkWidget      *widget,
 static gboolean
 gtk_drag_begin_idle (gpointer arg)
 {
+  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   GdkDragContext* context = (GdkDragContext*) arg;
   GtkDragSourceInfo* info = gtk_drag_get_source_info (context, FALSE);
   NSWindow *nswindow;
@@ -1096,6 +1099,8 @@ gtk_drag_begin_idle (gpointer arg)
 
   [info->nsevent release];
 
+  [pool release];
+
   return FALSE;
 }